#ifndef _UART_INIT_H_
#define _UART_INIT_H_

#include <termios.h>

void uart_print_attr(struct termios *options);

/*************************************************************
* 功能：	设置串口属性结构体
* 参数：	fd：串口设备文件描述符
			speed：串口波特率（可选2400、4800、9600、115200。可自己酌情修改程序添加支持）
			data_bits：数据位宽（可选5、6、7、8）
			stop_bits：停止位（可选1、2）
			check：奇偶校验位（可选'N'、'O'、'E'；分别应着无奇偶校验、奇校验、偶校验）
			options：串口属结构体，
* 返回值：	串口属性结构体
**************************************************************/
struct termios *uart_set_attr(int fd,
					int speed,
					int data_bits,
					int stop_bits,
					int check, 
					struct termios *options);

/*************************************************************
* 功能：	串口初始化程序
* 参数：	串口设备文件名
* 返回值：	串口设备文件描述符
**************************************************************/
int uart_init(char *devname);

/*************************************************************
* 功能：	串口反初始化程序
* 参数：	串口设备文件描述符
* 返回值：	无
**************************************************************/
void uart_uninit(int uart_fd);

/*************************************************************
* 功能：	串口发送字符串
* 参数：	uart_fd：串口设备文件描述符
			str：待发送的字符
* 返回值：	无
**************************************************************/
void uart_send_str(int uart_fd, char *str);

/*************************************************************
* 功能：	串口读一行字符串，在设定的时间内读不到数据则函数返回
* 参数：	uart_fd：串口设备文件描述符
			buffer：存放数据的内存的首地址
			len：存放数据的内存空间的大小
			timeout_ms：超时时间(单位：ms)
* 返回值：	
			成功：实际读到的字符数
			失败：-1
**************************************************************/
int uart_readline(int uart_fd, char *buffer, int len, int timeout_ms);


#endif
